# 导入必要的模块
from PIL import Image
from image_utils import logging
from skimage import io  # skimage.io模块用于读写图像文件

def load_image(image_path, as_gray=False):
    """
    从文件中载入图像。
    :param image_path: 图像文件路径
    :param as_gray: 是否以灰度图形式载入,默认为False
    :return: 载入的图像数据
    """
    try:
        logging.info(f"开始载入图像: {image_path}")
        image = io.imread(image_path, as_gray=as_gray)
        logging.info(f"成功载入图像: {image_path}")
        return image
    except Exception as e:
        logging.error(f"载入图像时发生错误: {e}")
        raise  # 向上抛出异常，让调用者处理

def save_image(image, save_path, format='png'):
    """
    将图像保存到文件。
    :param image: 要保存的图像数据
    :param save_path: 保存文件的路径
    :param format: 保存图像的格式，默认为'png'，支持PIL库支持的所有格式。
    """
    try:
        logging.info(f"开始保存图像: {save_path}")
        Image.fromarray(image).save(save_path, format=format)
        logging.info(f"图像成功保存在: {save_path}")
    except Exception as e:
        logging.error(f"保存图像时发生错误: {e}")
        raise  # 向上抛出异常，让调用者处理